package com.gradumate.client.gui.formulier;

import com.google.gwt.event.dom.client.BlurEvent;
import com.google.gwt.event.dom.client.BlurHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.FocusEvent;
import com.google.gwt.event.dom.client.FocusHandler;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.CaptionPanel;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
import com.gradumate.client.Element;
import com.gradumate.shared.Toolbox;

public class TabOrganisatie {
	private AfstudeerVoorstelIndienen tp;
	private Element e = new Element();
	private Toolbox tb = new Toolbox();
	
	private TextBox tabOrganisatietbNaam;
	private ListBox tabOrganisatielbVoertaal;
	private TextBox tabOrganisatietbGebouw;
	private TextBox tabOrganisatietbStraatnaam;
	private TextBox tabOrganisatietbHuisnummer;
	private TextBox tabOrganisatietbWebsite;
	private TextBox tabOrganisatietbPostcode;
	private TextBox tabOrganisatietbPlaats;
	private TextBox tabOrganisatietbExtrainfo;
	private TextBox tabOrganisatietbAantalwerknemers;
	
	private Label tabOrganisatielblNaamHulpTekst, tabOrganisatielblStraatnaamHulpTekst,tabOrganisatielblHuisummerHulpTekst,
				  tabOrganisatielblPostcodeHulptekst, tabOrganisatielblPlaatsHulpTekst,tabOrganisatielblAantalwerknemersHulpTekst;
	private String errormsg;
	private int row;
	private boolean validateOrganisatieTab;
	private int validateNaam=0,  validateVoertaal=1, validatePlaats=0, 
					validateGebouw=1, validateStraatnaam=0, validateHuisnummer=0,
					validateWebsite=1, validatePostcode=0, validateExtra=1, validateAantalWerknemers=0;
	
	public TabOrganisatie(AfstudeerVoorstelIndienen tp) {
		this.tp = tp;
	}

	/**
	 * Deze methode bevat alles wat te maken heeft met de tab Organisatie: <br>
	 * - alle visuele onderdelen zoals (statische en dynamische) labels en buttons<br>
	 * - ClickHandler voor de afhandeling van het click event van de button "volgende". Indien geselecteerd zal de ClickHandler aangeroepen worden.<br>
	 * - FocusHandlers voor alle invoervelden. Zo zal de standaardtekst van de invoervelden weggaan indien het invoerveld geselecteerd is.<br>
	 * - BlurHandlers voor alle invoervelden. Indien de focus niet meer op het geselecteerde invoerveld zit zal de Handler een methode aanroepen <br>
	 *   die de invoer van dat ene invoerveld zal gaan controleren.
	 *   <Br>
	 *   In deze tab moeten alle gegevens van het bedrijf waar je je afstudeer opdracht voor gaat maken gegeven worden.<br> 
	 *   
	 * @return De complete tab Organisatie. Deze bestaat uit een FlexTable waarin alle widgets van de tab zitten.
	 */
	public Widget getTabOrganisatie() {
		
		Label tabOrganisatielab1 = new Label("Afstudeervoorstel indienen");
		tabOrganisatielab1.setStyleName("titel");

		Label lblBijDezeStap = new Label("Bij deze stap worden de gegevens gevraagd van de organisatie waar de afstudeeropdracht wordt uitgevoerd.");
		Label lblHetIsEen = new Label("Het is een vereiste alle invoervelden in te voeren, tenzij anders aangegeven. ");

		tabOrganisatietbNaam = new TextBox();
		tabOrganisatietbNaam.setText("naam");
		tabOrganisatietbNaam.setStyleName("grijs");
		tabOrganisatietbNaam.addFocusHandler(new FocusHandler() {
			public void onFocus(FocusEvent event) {
				tabOrganisatietbNaam.setStyleName("zwart");
				if (tabOrganisatietbNaam.getText().equals("naam")) {
					tabOrganisatietbNaam.setText("");
				}
			}
		});
		tabOrganisatietbNaam.addBlurHandler(new BlurHandler() {
			public void onBlur(BlurEvent event) {
				if(validatieBedrijfsnaam() == 2){
					if (tabOrganisatietbNaam.getText().equals("")) {
						tabOrganisatietbNaam.setText("naam");
					}
					tp.setLabel("tabOverzichtlblBedrijfsnaam1", "-");
					tabOrganisatietbNaam.setStyleName("fouteinvoer");
				}
			}
		});
		tabOrganisatielblNaamHulpTekst = new Label("Vul hier de naam van het bedrijf in.");
		tabOrganisatielblNaamHulpTekst.setVisible(false);

		tabOrganisatielbVoertaal = new ListBox();
		tabOrganisatielbVoertaal.setSize("120px", "23px");
		tabOrganisatielbVoertaal.addItem("Maak uw keuze:");
		tabOrganisatielbVoertaal.addItem("Nederlands");
		tabOrganisatielbVoertaal.addItem("Engels");
		tabOrganisatielbVoertaal.addItem("Duits");
		tabOrganisatielbVoertaal.addItem("Frans");
		tabOrganisatielbVoertaal.addItem("Chinees");
		tabOrganisatielbVoertaal.addBlurHandler(new BlurHandler() {
			public void onBlur(BlurEvent event) {
				if (tabOrganisatielbVoertaal.getSelectedIndex() > 0) {
					tp.setLabel("tabOverzichtlblVoertaal1", tabOrganisatielbVoertaal.getItemText(tabOrganisatielbVoertaal.getSelectedIndex())); 
					
				} else {
					tp.setLabel("tabOverzichtlblVoertaal1", "-");
				}
			}
		});
		Label lblOptioneel_1 = new Label("Optioneel");

		tabOrganisatietbGebouw = new TextBox();
		tabOrganisatietbGebouw.setText("gebouw");
		tabOrganisatietbGebouw.setStyleName("grijs");
		tabOrganisatietbGebouw.addFocusHandler(new FocusHandler() {
			public void onFocus(FocusEvent event) {
				tabOrganisatietbGebouw.setStyleName("zwart");
				if (tabOrganisatietbGebouw.getText().equals("gebouw")) {
					tabOrganisatietbGebouw.setText("");
				}
			}
		});
		tabOrganisatietbGebouw.addBlurHandler(new BlurHandler() {
			public void onBlur(BlurEvent event) {
				validatieGebouwnaam();
				if (tabOrganisatietbGebouw.getText().equals("")) {
					tabOrganisatietbGebouw.setText("gebouw");
					tabOrganisatietbGebouw.setStyleName("grijs");
					tp.setLabel("tabOverzichtlblGebouw1", "-");
				}
			}
		});
		Label lblOptioneel_2 = new Label("Optioneel");

		tabOrganisatietbStraatnaam = new TextBox();
		tabOrganisatietbStraatnaam.setText("straatnaam");
		tabOrganisatietbStraatnaam.setStyleName("grijs");
		tabOrganisatietbStraatnaam.addFocusHandler(new FocusHandler() {
			public void onFocus(FocusEvent event) {
				tabOrganisatietbStraatnaam.setStyleName("zwart");
				if (tabOrganisatietbStraatnaam.getText().equals("straatnaam")) {
					tabOrganisatietbStraatnaam.setText("");
				}
			}
		});
		tabOrganisatietbStraatnaam.addBlurHandler(new BlurHandler() {
			public void onBlur(BlurEvent event) {
				validatieStraatnaam();
				if (tabOrganisatietbStraatnaam.getText().equals("")) {
					tabOrganisatietbStraatnaam.setStyleName("fouteinvoer");
					tabOrganisatietbStraatnaam.setText("straatnaam");
					tp.setLabel("tabOverzichtlblStraatnaam1", "-");
				}
			}
		});
		tabOrganisatielblStraatnaamHulpTekst = new Label("Voer hier de straatnaam van het adres van het bedrijf in. Bijvoorbeeld Stationsweg");
		tabOrganisatielblStraatnaamHulpTekst.setVisible(false);

		tabOrganisatietbHuisnummer = new TextBox();
		tabOrganisatietbHuisnummer.setText("huisnummer");
		tabOrganisatietbHuisnummer.setStyleName("grijs");
		tabOrganisatietbHuisnummer.setWidth("75px");
		tabOrganisatietbHuisnummer.addFocusHandler(new FocusHandler() {
			public void onFocus(FocusEvent event) {
				tabOrganisatietbHuisnummer.setStyleName("zwart");
				if (tabOrganisatietbHuisnummer.getText().equals("huisnummer")) {
					tabOrganisatietbHuisnummer.setText("");
				}
			}
		});
		tabOrganisatietbHuisnummer.addBlurHandler(new BlurHandler() {
			public void onBlur(BlurEvent event) {
				validatieHuisnummer();
				if (tabOrganisatietbHuisnummer.getText().equals("")) {
					tabOrganisatietbHuisnummer.setStyleName("fouteinvoer");
					tabOrganisatietbHuisnummer.setText("huisnummer");
					tp.setLabel("tabOverzichtlblHuisnummer1", "-");
				}
			}
		});
		tabOrganisatielblHuisummerHulpTekst = new Label("Voer hier het huisnummer in van het adres van het bedrijf. Bijvoorbeeld 2");
		tabOrganisatielblHuisummerHulpTekst.setVisible(false);

		tabOrganisatietbPostcode = new TextBox();
		tabOrganisatietbPostcode.setText("postcode");
		tabOrganisatietbPostcode.setStyleName("grijs");
		tabOrganisatietbPostcode.setWidth("75px");
		tabOrganisatietbPostcode.addFocusHandler(new FocusHandler() {
			public void onFocus(FocusEvent event) {
				tabOrganisatietbPostcode.setStyleName("zwart");
				if (tabOrganisatietbPostcode.getText().equals("postcode")) {
					tabOrganisatietbPostcode.setText("");
				}
			}
		});
		tabOrganisatietbPostcode.addBlurHandler(new BlurHandler() {
			public void onBlur(BlurEvent event) {
				validatiePostcode();
				if (tabOrganisatietbPostcode.getText().equals("")) {
					tabOrganisatietbPostcode.setStyleName("fouteinvoer");
					tabOrganisatietbPostcode.setText("postcode");
					tp.setLabel("tabOverzichtlblPostcode1", "-");
				}
			}
		});
		tabOrganisatielblPostcodeHulptekst = new Label("Voer hier de postcode in van het bedrijf. Bijvoorbeeld 1234AB");
		tabOrganisatielblPostcodeHulptekst.setVisible(false);

		tabOrganisatietbPlaats = new TextBox();
		tabOrganisatietbPlaats.setText("plaats");
		tabOrganisatietbPlaats.setStyleName("grijs");
		tabOrganisatietbPlaats.addFocusHandler(new FocusHandler() {
			public void onFocus(FocusEvent event) {
				tabOrganisatietbPlaats.setStyleName("zwart");
				if (tabOrganisatietbPlaats.getText().equals("plaats")) {
					tabOrganisatietbPlaats.setText("");
				}
			}
		});
		tabOrganisatietbPlaats.addBlurHandler(new BlurHandler() {
			public void onBlur(BlurEvent event) {
				validatiePlaats();
				if (tabOrganisatietbPlaats.getText().equals("")) {
					tabOrganisatietbPlaats.setStyleName("fouteinvoer");
					tabOrganisatietbPlaats.setText("plaats");
					tp.setLabel("tabOverzichtlblPlaats1", "-");
				}
			}
		});
		tabOrganisatielblPlaatsHulpTekst = new Label("Voer hier de plaats in van het bedrijf. Bijvoorbeeld: Utrecht");
		tabOrganisatielblPlaatsHulpTekst.setVisible(false);

		tabOrganisatietbWebsite = new TextBox();
		tabOrganisatietbWebsite.setText("website");
		tabOrganisatietbWebsite.setStyleName("grijs");
		tabOrganisatietbWebsite.addFocusHandler(new FocusHandler() {
			public void onFocus(FocusEvent event) {
				tabOrganisatietbWebsite.setStyleName("zwart");
				if (tabOrganisatietbWebsite.getText().equals("website")) {
					tabOrganisatietbWebsite.setText("");
				}
			}
		});
		tabOrganisatietbWebsite.addBlurHandler(new BlurHandler() {
			public void onBlur(BlurEvent event) {
				validatieWebsite();
				if (tabOrganisatietbWebsite.getText().equals("")) {
					tabOrganisatietbWebsite.setStyleName("grijs");
					tabOrganisatietbWebsite.setText("website");
					tp.setLabel("tabOverzichtlblWebsite1", "-");
				}
			}
		});
		Label lblOptioneel_3 = new Label("Optioneel");

		tabOrganisatietbExtrainfo = new TextBox();
		tabOrganisatietbExtrainfo.setText("extra informatie");
		tabOrganisatietbExtrainfo.setStyleName("grijs");
		tabOrganisatietbExtrainfo.addFocusHandler(new FocusHandler() {
			public void onFocus(FocusEvent event) {
				tabOrganisatietbExtrainfo.setStyleName("zwart");
				if (tabOrganisatietbExtrainfo.getText().equals("extra informatie")) {
					tabOrganisatietbExtrainfo.setText("");
				}
			}
		});
		tabOrganisatietbExtrainfo.addBlurHandler(new BlurHandler() {
			public void onBlur(BlurEvent event) {
				validatieExtrainfo();
				if (tabOrganisatietbExtrainfo.getText().equals("")) {
					tabOrganisatietbExtrainfo.setStyleName("grijs");
					tabOrganisatietbExtrainfo.setText("extra informatie");
					tp.setLabel("tabOverzichtlblExtrainfo1", "-");
				}
			}
		});
		Label lblOptioneel_4 = new Label("Optioneel");

		tabOrganisatietbAantalwerknemers = new TextBox();
		tabOrganisatietbAantalwerknemers.setText("aantal werknemers");
		tabOrganisatietbAantalwerknemers.setStyleName("grijs");
		tabOrganisatietbAantalwerknemers.addFocusHandler(new FocusHandler() {
			public void onFocus(FocusEvent event) {
				tabOrganisatietbAantalwerknemers.setStyleName("zwart");
				if (tabOrganisatietbAantalwerknemers.getText().equals("aantal werknemers")) {
					tabOrganisatietbAantalwerknemers.setText("");
				}
			}
		});
		tabOrganisatietbAantalwerknemers.addBlurHandler(new BlurHandler() {
			public void onBlur(BlurEvent event) {
				validatieAantalwerknemers();
				if (tabOrganisatietbAantalwerknemers.getText().equals("")) {
					tabOrganisatietbAantalwerknemers.setStyleName("fouteinvoer");
					tabOrganisatietbAantalwerknemers.setText("aantal werknemers");
					tp.setLabel("tabOverzichtlblAantalwerknemers1", "-");
				}
			}
		});
		tabOrganisatielblAantalwerknemersHulpTekst = new Label("Voer hier het aantal medewerkers in van het bedrijf.");
		tabOrganisatielblAantalwerknemersHulpTekst.setVisible(false);

		Button tabOrganisatiebt1 = e.getVolgendeButton();
		tabOrganisatiebt1.addClickHandler(new ClickHandler() {
			public void onClick(ClickEvent event) {
				tabOrganisatieValidatie();
				tp.changeTab(2,3);
			}
		});	
		Anchor hprlnkOrganisatieAnnuleren = new Anchor("Annuleren","https://www.sharepoint.hu.nl");
		Image img = new Image();
		img.setAltText("cancel img");
		img.setUrl("style/icon/cancel.png");

		HorizontalPanel hpAnnuleren = new HorizontalPanel();
		hpAnnuleren.add(e.getSpacer());
		hpAnnuleren.add(hprlnkOrganisatieAnnuleren);
		hpAnnuleren.add(img);

		Label tabOrganisatielab2 = new Label("Naam:");
		tabOrganisatielab2.setStyleName("label");
		Label tabOrganisatielab3 = new Label("Voertaal:");
		Label tabOrganisatielab4 = new Label("Gebouw:");
		Label tabOrganisatielab5 = new Label("Straatnaam:");
		Label tabOrganisatielab6 = new Label("Huisnummer:");
		Label tabOrganisatielab7 = new Label("Postcode:");
		Label tabOrganisatielab8 = new Label("Plaats:");
		Label tabOrganisatielab9 = new Label("Website:");
		Label tabOrganisatielab10 = new Label("Extra informatie:");
		Label tabOrganisatielab11 = new Label("Aantal werknemers:");

		row = 0;
		FlexTable flxOrganisatieHeader = new FlexTable();
		flxOrganisatieHeader.setCellPadding(0);
		flxOrganisatieHeader.setCellSpacing(3);

		flxOrganisatieHeader.setWidget(row, 0, e.getAfstudeerVoorstelIndienenHeader());
		row++;
		flxOrganisatieHeader.setWidget(row, 0, lblBijDezeStap);
		row++;
		flxOrganisatieHeader.setWidget(row, 0, lblHetIsEen);

		row = 0;
		FlexTable flxOrganisatieContent = new FlexTable();
		flxOrganisatieContent.setCellPadding(0);
		flxOrganisatieContent.setCellSpacing(3);

		flxOrganisatieContent.setWidget(row, 0, tabOrganisatielab2);
		flxOrganisatieContent.setWidget(row, 1, tabOrganisatietbNaam);
		flxOrganisatieContent.setWidget(row, 2, tabOrganisatielblNaamHulpTekst);
		row++;
		flxOrganisatieContent.setWidget(row, 0, tabOrganisatielab3);
		flxOrganisatieContent.setWidget(row, 1, tabOrganisatielbVoertaal);
		flxOrganisatieContent.setWidget(row, 2, lblOptioneel_1);
		row++;
		flxOrganisatieContent.setWidget(row, 0, tabOrganisatielab4);
		flxOrganisatieContent.setWidget(row, 1, tabOrganisatietbGebouw);
		flxOrganisatieContent.setWidget(row, 2, lblOptioneel_2);
		row++;
		flxOrganisatieContent.setWidget(row, 0, tabOrganisatielab5);
		flxOrganisatieContent.setWidget(row, 1, tabOrganisatietbStraatnaam);
		flxOrganisatieContent.setWidget(row, 2, tabOrganisatielblStraatnaamHulpTekst);
		row++;
		flxOrganisatieContent.setWidget(row, 0, tabOrganisatielab6);
		flxOrganisatieContent.setWidget(row, 1, tabOrganisatietbHuisnummer);
		flxOrganisatieContent.setWidget(row, 2, tabOrganisatielblHuisummerHulpTekst);
		row++;
		flxOrganisatieContent.setWidget(row, 0, tabOrganisatielab7);
		flxOrganisatieContent.setWidget(row, 1, tabOrganisatietbPostcode);
		flxOrganisatieContent.setWidget(row, 2, tabOrganisatielblPostcodeHulptekst);
		row++;
		flxOrganisatieContent.setWidget(row, 0, tabOrganisatielab8);
		flxOrganisatieContent.setWidget(row, 1, tabOrganisatietbPlaats);
		flxOrganisatieContent.setWidget(row, 2, tabOrganisatielblPlaatsHulpTekst);
		row++;
		flxOrganisatieContent.setWidget(row, 0, tabOrganisatielab9);
		flxOrganisatieContent.setWidget(row, 1, tabOrganisatietbWebsite);
		flxOrganisatieContent.setWidget(row, 2, lblOptioneel_3);
		row++;
		flxOrganisatieContent.setWidget(row, 0, tabOrganisatielab10);
		flxOrganisatieContent.setWidget(row, 1, tabOrganisatietbExtrainfo);
		flxOrganisatieContent.setWidget(row, 2, lblOptioneel_4);
		row++;
		flxOrganisatieContent.setWidget(row, 0, tabOrganisatielab11);
		flxOrganisatieContent.setWidget(row, 1, tabOrganisatietbAantalwerknemers);
		flxOrganisatieContent.setWidget(row, 2, tabOrganisatielblAantalwerknemersHulpTekst);

		CaptionPanel cpOrganisatie = new CaptionPanel("Organisatiegegevens");
		cpOrganisatie.add(flxOrganisatieContent);

		row = 0;
		FlexTable flxOrganisatieFooter = new FlexTable();
		flxOrganisatieFooter.setCellPadding(0);
		flxOrganisatieFooter.setCellSpacing(12);

		flxOrganisatieFooter.setWidget(row, 0, tabOrganisatiebt1);
		flxOrganisatieFooter.setWidget(row, 1, hpAnnuleren);

		row = 0;
		FlexTable flxOrganisatie = new FlexTable();
		flxOrganisatie.setCellPadding(0);
		flxOrganisatie.setCellSpacing(3);

		row++;
		flxOrganisatie.setWidget(row, 0, flxOrganisatieHeader);
		row++;
		flxOrganisatie.setWidget(row, 0, cpOrganisatie);
		row++;
		flxOrganisatie.setWidget(row, 0, flxOrganisatieFooter);

		return flxOrganisatie;
	}
	
	/**
	 * Methode die alle error messages in 1 string zet en deze aan de variabele 'errormsg' geeft.
	 */
	public String getErrormsg(){
		errormsg = "";
		if(validateNaam==2){errormsg=errormsg + "- Bedrijfnaam is niet correct ingevuld.<br />";} 
		if(validateGebouw==2){errormsg = errormsg+ "- Gebouw naam van het bedrijf is niet correct ingevuld.<br />";} 
		if(validateStraatnaam==2){errormsg = errormsg + "- Straatnaam van het bedrijf is niet correct ingevuld.<br />";} 
		if(validateHuisnummer==2){errormsg = errormsg + "- Huisnummer van het bedrijf is niet correct ingevuld.<br />";}
		if(validatePostcode==2){ errormsg = errormsg + "- Postcode van het bedrijf is niet correct ingevuld.<br />";}
		if(validatePlaats==2){ errormsg = errormsg + "- Plaats van het bedrijf is niet correct ingevuld.<br />";}
		if(validateWebsite==2){ errormsg = errormsg + "- Website van het bedrijf is niet correct ingevuld.<br />";}
		if(validateExtra==2){ errormsg = errormsg + "- Extra informatie over het bedrijf is niet correct ingevuld.";}
		if(validateAantalWerknemers==2){ errormsg = errormsg + "- Het aantal werknemers van het bedrijf is niet correct ingevuld.<br />";}
		return errormsg;
	}
	
	/**
	 * Deze methode valideert alle ingevoerde gegevens van de tab waar alle bedrijfsgegevens ingevuld moeten worden<Br>
	 * Er wordt voor elk invoerveld een methode aangeroepen die een validatie uitvoert.<br>
	 * Bij foute invoer zal er een foutmelding verschijnen. 
	 */
	private void tabOrganisatieValidatie(){	
		if(validateNaam==0){validatieBedrijfsnaam();}
		if(validateStraatnaam==0){validatieStraatnaam();}
		if(validateHuisnummer==0){validatieHuisnummer();}
		if(validatePostcode==0){validatiePostcode();}
		if(validatePlaats==0){validatiePlaats();}
		if(validateAantalWerknemers==0){validatieAantalwerknemers();}
		
		if(validateNaam==1 && validateVoertaal==1 && validateGebouw==1 && validateStraatnaam==1 && 
		  validateHuisnummer==1 && validatePostcode==1 && validatePlaats==1 && validateWebsite==1 &&
		  validateExtra==1 && validateAantalWerknemers==1){
			validateOrganisatieTab = true;
		}

		if(!validateOrganisatieTab){
			tp.showDialogBox(getErrormsg(), "Foutmelding");
			tp.tabStatus("TabOrganisatie", false);
		} else {
			tp.tabStatus("TabOrganisatie", true);
		}
	}
	
	/**
	 * Deze functie test de waarde van het invoerveld van de bedrijfsnaam.
	 * @return int <br>
	 * - 1 wanneer de waarde geldig is. De waarde van het invoerveld zal nu in het overzichts tab zichtbaar zijn. <br>
	 * - 2 wanneer de waarde niet geldig is. De tekst van de foutmelding wordt geset
	 */
	public int validatieBedrijfsnaam(){
		validateNaam = 1; //true

		// Controle: textbox van de bedrijfsnaam
		if (!tb.NaamRegex(tabOrganisatietbNaam.getText()) || tabOrganisatietbNaam.getText().equals("naam")) {
			validateOrganisatieTab = false;
			validateNaam = 2; //false
			tabOrganisatietbNaam.setStyleName("fouteinvoer");
		}
		if(validateNaam == 1){
			tp.setLabel("tabOverzichtlblBedrijfsnaam1", tabOrganisatietbNaam.getText());
			tabOrganisatietbNaam.setStyleName("correcteinvoer");
		}
		if(validateNaam == 1){tabOrganisatielblNaamHulpTekst.setVisible(false);}
		if(validateNaam == 2){tabOrganisatielblNaamHulpTekst.setVisible(true);}
		return validateNaam;
	}

	/**
	 * Deze functie test de waarde van het invoerveld van de gebouw naam van het bedrijf
	 * @return int <br>
	 * - 1 wanneer de waarde geldig is. De waarde van het invoerveld zal nu in het overzichts tab zichtbaar zijn. <br>
	 * - 2 wanneer de waarde niet geldig is. De tekst van de foutmelding wordt geset
	 */
	public int validatieGebouwnaam(){
		validateGebouw = 1; //true

		if(!tabOrganisatietbGebouw.getText().equals("gebouw") && !tabOrganisatietbGebouw.getText().equals("")){
			if (!tb.NaamRegex(tabOrganisatietbGebouw.getText())) {
				validateOrganisatieTab = false;
				validateGebouw = 2;//false
				tabOrganisatietbGebouw.setStyleName("fouteinvoer");
			}
			else{
				tp.setLabel("tabOverzichtlblGebouw1", tabOrganisatietbGebouw.getText());
				tabOrganisatietbGebouw.setStyleName("correcteinvoer");
			}
		}
		if(tabOrganisatietbGebouw.getText().equals("gebouw")){
			tp.setLabel("tabOverzichtlblGebouw1", "-");
		}
		return validateGebouw;
	}

	/**
	 * Deze functie test de waarde van het invoerveld van de straatnaam van het bedrijf.
	 * @return int <br>
	 * - 1 wanneer de waarde geldig is. De waarde van het invoerveld zal nu in het overzichts tab zichtbaar zijn. <br>
	 * - 2 wanneer de waarde niet geldig is. De tekst van de foutmelding wordt geset. (nog niet getoond)
	 */
	public int validatieStraatnaam(){
		validateStraatnaam = 1; //true

		if (!tb.NaamRegex(tabOrganisatietbStraatnaam.getText()) || tabOrganisatietbStraatnaam.getText().equals("straatnaam")) {
			validateOrganisatieTab = false;
			validateStraatnaam = 2; //false
			tabOrganisatietbStraatnaam.setStyleName("fouteinvoer");
		}
		else{
			tp.setLabel("tabOverzichtlblStraatnaam1", tabOrganisatietbStraatnaam.getText());
			tabOrganisatietbStraatnaam.setStyleName("correcteinvoer");
		}
		if(validateStraatnaam == 1){tabOrganisatielblStraatnaamHulpTekst.setVisible(false);}
		if(validateStraatnaam == 2){tabOrganisatielblStraatnaamHulpTekst.setVisible(true);}
		return validateStraatnaam;
	}

	/**
	 * Deze functie test de waarde van het invoerveld van het huisnummer van het bedrijf.
	 * @return int <br>
	 * - 1 wanneer de waarde geldig is. De waarde van het invoerveld zal nu in het overzichts tab zichtbaar zijn. <br>
	 * - 2 wanneer de waarde niet geldig is. De tekst van de foutmelding wordt geset. (nog niet getoond)
	 */
	public int validatieHuisnummer(){
		validateHuisnummer = 1; //true

		if (!tabOrganisatietbHuisnummer.getText().matches("^([0-9]+|[0-9]+[a-zA-Z -]+)$") || tabOrganisatietbHuisnummer.getText().equals("huisnummer")){
			validateOrganisatieTab = false;
			validateHuisnummer = 2; //false
			tabOrganisatietbHuisnummer.setStyleName("fouteinvoer");
		}
		else{
			tp.setLabel("tabOverzichtlblHuisnummer1", tabOrganisatietbHuisnummer.getText());
			tabOrganisatietbHuisnummer.setStyleName("correcteinvoer");
		}
		if(validateHuisnummer == 1){tabOrganisatielblHuisummerHulpTekst.setVisible(false);}
		if(validateHuisnummer == 2){tabOrganisatielblHuisummerHulpTekst.setVisible(true);}
		return validateHuisnummer;
	}

	/**
	 * Deze functie test de waarde van het invoerveld van de postcode van het bedrijf.
	 * @return int <br>
	 * - 1 wanneer de waarde geldig is. De waarde van het invoerveld zal nu in het overzichts tab zichtbaar zijn. <br>
	 * - 2 wanneer de waarde niet geldig is. De tekst van de foutmelding wordt geset. (nog niet getoond)
	 */
	public int validatiePostcode(){
		validatePostcode = 1;//true

		if (!tabOrganisatietbPostcode.getText().matches("^([0-9]{4}[' '][a-zA-Z]{2}|[0-9]{4}[a-zA-Z]{2})$") || tabOrganisatietbPostcode.getText().equals("postcode")) {
			validateOrganisatieTab = false;
			validatePostcode = 2; //false
			tabOrganisatietbPostcode.setStyleName("fouteinvoer");
		}
		else{
			tp.setLabel("tabOverzichtlblPostcode1", tabOrganisatietbPostcode.getText());
			tabOrganisatietbPostcode.setStyleName("correcteinvoer");
		}
		if(validatePostcode == 1){tabOrganisatielblPostcodeHulptekst.setVisible(false);}
		if(validatePostcode == 2){tabOrganisatielblPostcodeHulptekst.setVisible(true);}
		return validatePostcode;
	}

	/**
	 * Deze functie test de waarde van het invoerveld van de plaats van het bedrijf.
	 * @return int <br>
	 * - 1 wanneer de waarde geldig is. De waarde van het invoerveld zal nu in het overzichts tab zichtbaar zijn. <br>
	 * - 2 wanneer de waarde niet geldig is. De tekst van de foutmelding wordt geset. (nog niet getoond)
	 */
	public int validatiePlaats(){
		validatePlaats = 1;//true

		if (!tabOrganisatietbPlaats.getText().matches("^[a-zA-Z ,'-]+$") || tabOrganisatietbPlaats.getText().equals("plaats")) {
			validateOrganisatieTab = false;
			validatePlaats = 2;//false
			tabOrganisatietbPlaats.setStyleName("fouteinvoer");
		}
		else{
			tp.setLabel("tabOverzichtlblPlaats1", tabOrganisatietbPlaats.getText());
			tabOrganisatietbPlaats.setStyleName("correcteinvoer");
		}
		if(validatePlaats == 1){tabOrganisatielblPlaatsHulpTekst.setVisible(false);}
		if(validatePlaats == 2){tabOrganisatielblPlaatsHulpTekst.setVisible(true);}
		return validatePlaats;
	}

	/**
	 * Deze functie test de waarde van het invoerveld van de website van het bedrijf.<br>
	 * Dit gegeven hoeft niet gegeven te worden en is dus optioneel.
	 * @return int <br>
	 * - 1 wanneer de waarde geldig is. De waarde van het invoerveld zal nu in het overzichts tab zichtbaar zijn. <br>
	 * - 2 wanneer de waarde niet geldig is. De tekst van de foutmelding wordt geset. (nog niet getoond)
	 */
	public int validatieWebsite(){
		validateWebsite = 1;//true

		if (!tabOrganisatietbWebsite.getText().equals("website") && !tabOrganisatietbWebsite.getText().equals("")) {
			if (!tabOrganisatietbWebsite.getText().matches("^[a-zA-Z ,-_]+.[a-zA-Z]+$")) {
				validateOrganisatieTab = false;
				validateWebsite = 2;//false
				tabOrganisatietbWebsite.setStyleName("fouteinvoer");
			}
			else{
				tp.setLabel("tabOverzichtlblWebsite1", tabOrganisatietbWebsite.getText());
				tabOrganisatietbWebsite.setStyleName("correcteinvoer");
			}
		}
		if (tabOrganisatietbWebsite.getText().equals("website")){
			tp.setLabel("tabOverzichtlblWebsite1", "-");
		}
		return validateWebsite;
	}

	/**
	 * Deze functie test de waarde van het invoerveld van de extra informatie over het bedrijf.<br>
	 * Dit gegeven hoeft niet gegeven te worden en is dus optioneel.
	 * @return int <br>
	 * - 1 wanneer de waarde geldig is. De waarde van het invoerveld zal nu in het overzichts tab zichtbaar zijn. <br>
	 * - 2 wanneer de waarde niet geldig is. De tekst van de foutmelding wordt geset. (nog niet getoond)
	 */
	public int validatieExtrainfo(){
		validateExtra = 1;//true

		if (!tabOrganisatietbExtrainfo.getText().equals("extra informatie") && !tabOrganisatietbExtrainfo.getText().equals("")) {
			if (!tabOrganisatietbExtrainfo.getText().matches("^[a-zA-Z ,.;:]+$")) {
				validateOrganisatieTab = false;
				validateExtra = 2;//false
				tabOrganisatietbExtrainfo.setStyleName("fouteinvoer");
			}
			else{
				tp.setLabel("tabOverzichtlblExtrainfo1", tabOrganisatietbExtrainfo.getText());
			}
		}
		if (tabOrganisatietbExtrainfo.getText().equals("extra informatie")){
			tp.setLabel("tabOverzichtlblExtrainfo1", "-");
		}
		return validateExtra;
	}

	/**
	 * Deze functie test de waarde van het invoerveld van het aantal werknemers van het bedrijf.<br>
	 * @return int <br>
	 * - 1 wanneer de waarde geldig is. De waarde van het invoerveld zal nu in het overzichts tab zichtbaar zijn. <br>
	 * - 2 wanneer de waarde niet geldig is. De tekst van de foutmelding wordt geset. (nog niet getoond)
	 */
	public int validatieAantalwerknemers(){
		validateAantalWerknemers = 1;//true

		if (!tabOrganisatietbAantalwerknemers.getText().matches("^[0-9+]+$") || tabOrganisatietbAantalwerknemers.getText().equals("aantal werknemers")) {
			validateOrganisatieTab = false;
			validateAantalWerknemers = 2;//false
			tabOrganisatietbAantalwerknemers.setStyleName("fouteinvoer");
		}
		else{
			tp.setLabel("tabOverzichtlblAantalwerknemers1", tabOrganisatietbAantalwerknemers.getText());
			tabOrganisatietbAantalwerknemers.setStyleName("correcteinvoer");
		}
		if(validateAantalWerknemers == 1){tabOrganisatielblAantalwerknemersHulpTekst.setVisible(false);}
		if(validateAantalWerknemers == 2){tabOrganisatielblAantalwerknemersHulpTekst.setVisible(true);}
		return validateAantalWerknemers;
	}
}